#include "bsp_rtc.h"
#include "spi.h"
#include "usart.h"
#include "gpio.h"
#include "task.h"
#include "drv_dht20.h"
extern int rtc_intFlag;
extern void SystemClock_Config(void);
static uint8_t data;
void sleep(uint8_t wakeTimeMinutes)
{
	HAL_SPI_MspDeInit(&hspi1);
	HAL_GPIO_WritePin(GPIOA, SPI1_CS_Pin|SPI_DC_Pin|SPI_RST_Pin,GPIO_PIN_RESET);
	HAL_GPIO_DeInit(GPIOA, SPI1_CS_Pin|SPI_DC_Pin|SPI_RST_Pin);
	
	HAL_UART_DeInit(&huart1);
	HAL_GPIO_WritePin(GPIO_SDA_GPIO_Port, GPIO_SDA_Pin,GPIO_PIN_RESET);
	HAL_GPIO_DeInit(GPIO_SDA_GPIO_Port, GPIO_SDA_Pin);
	HAL_GPIO_WritePin(GPIO_LED_GPIO_Port, GPIO_LED_Pin,GPIO_PIN_RESET);
	HAL_GPIO_DeInit(GPIO_LED_GPIO_Port, GPIO_LED_Pin);
//	HAL_GPIO_WritePin(GPIO_KEY_GPIO_Port,GPIO_KEY_Pin,GPIO_PIN_RESET);
//	HAL_GPIO_DeInit(GPIO_KEY_GPIO_Port, GPIO_KEY_Pin);
	SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;
	setalarm(wakeTimeMinutes);
	HAL_PWR_EnterSLEEPMode(PWR_MAINREGULATOR_ON, PWR_SLEEPENTRY_WFI);
	NVIC_SystemReset();
	SystemClock_Config();
	if(rtc_intFlag==1)
	{
		rtc_intFlag=0;
		setalarm(wakeTimeMinutes);
	}
	SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;   
	MX_GPIO_Init();
	MX_SPI1_Init();
	MX_USART1_UART_Init();
	__HAL_UART_ENABLE_IT(&huart1, UART_IT_ERR);
	HAL_UART_Receive_IT(&huart1,&data,1);
	if(__HAL_UART_GET_IT(&huart1,UART_IT_ORE) != RESET) 
	{
		__HAL_UART_CLEAR_IT(&huart1,UART_CLEAR_OREF);
	}
}